const router = require("koa-router")();
const USER = require("../models/users");

router.prefix("/users");

router.get("/", async function (ctx, next) {
  ctx.body = await USER.find();
});

// 登录获取token
router.post("/login", async function (ctx, next) {
  let obj = ctx.request.body;
  let user = await USER.findOne({
    $and: [{ name: obj.name, password: obj.password }],
  });
  if (user) {
    //存储1 ，秘钥，有效期
    let token = await JWT.sign({ name: user.name, _id: user._id }, "123456", {
      expiresIn: "7d",
    });
    ctx.body = {
      user: user,
      token: token,
    };
  } else {
    ctx.body = "用户名或密码错误";
  }
});

// 注册
router.post("/sign", async function (ctx, next) {
  let obj = ctx.request.body;
  if (obj.name) {
    ctx.body = await USER.create(obj);
  } else {
    ctx.body = "格式错误";
  }
});

module.exports = router;

// 这段代码是使用Koa框架和koa-router中间件来创建一个路由对象，并将其导出。该路由对象具有以下功能：
//
// 1. 查询用户：通过GET请求访问"/users/"路径，从数据库中查询所有用户信息并返回。
// 2. 登录获取token：通过POST请求访问"/users/login"路径，根据传入的用户名和密码在数据库中查找对应的用户信息，如果找到则生成一个包含用户信息的JWT token并返回，否则返回错误信息。
// 3. 注册用户：通过POST请求访问"/users/sign"路径，将请求体中的用户信息添加到数据库中。
//
// 最后，将该路由对象导出，以便在其他文件中使用。